package actor.sensori;

import gui.houseeditor.HouseModel.HouseObject;
import sde.actor.Message;
import sde.actor.Timer;
import attori.controller.ControllerLuceIF;
import attori.model.Stanza;

public class SensoreVolume extends Sensore {
	Stanza stanza;

	private static class Timeout extends Message {
	}

	private ControllerLuceIF controller;
	private Timer timer = new Timer();
	private Timeout timeout = new Timeout();
	private long periodo;

	public SensoreVolume(Stanza stanza, ControllerLuceIF controller,
			long periodo) {
		super();
		this.stanza = stanza;
		this.controller = controller;
		this.periodo = periodo;
		send(timeout);
	}

	@Override
	public void sample() {
		int volume = 0;
		for (int i = stanza.getRigaInizio(); i <= stanza.getRigaFine(); i++) {
			for (int j = stanza.getColonnaInizio(); j <= stanza.getColonnaFine(); j++) {
				if (!(stanza.getModello().getCell(i, j) == HouseObject.BLANK)) {
					volume++;
				}
			}
		}
		controller.send(new ControllerLuceIF.Volume(volume));
	}

	@Override
	protected void handler(Message m) {
		if (m == timeout) {
			sample();
			timer.set(m, this, periodo);
		}
	}

}
